using System.Collections.Generic;
using Headsight.BPMN2WF.BPMN.Model;
using Headsight.BPMN2WF.Testing.TestObjCtors;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Headsight.BPMN2WF.Testing.TestObjCtorsTest
{
    [TestClass]
    public class BPMNModelFactoryBPMNArgumentCtorTest
    {
        private BPMNModelFactoryBPMNArgumentCtor _sut;

        [TestInitialize]
        public void SetUp()
        {
            _sut = new BPMNModelFactoryBPMNArgumentCtor();
        }

        [TestMethod]
        public void Create()
        {
            var actual = _sut.Create();

            Assert.IsNotNull(actual);
        }

        [TestMethod]
        public void WithBPMNProcessArguments_is_chaining()
        {
            Assert.AreSame(_sut, _sut.WithBPMNProcessArguments(new List<BPMNArgument>()));
        }

        [TestMethod]
        public void WithBPMNProcessArguments_Create()
        {
            var args = new List<BPMNArgument>();

            var actual = _sut.WithBPMNProcessArguments(args).Create();

            Assert.AreSame(args, actual.CreateArguments(null, null, null));
            Assert.AreSame(args, actual.CreateArgumentsIn(null));
            Assert.AreSame(args, actual.CreateArgumentsOut(null));
        }
    }
}